// pages/coupon/buy.js
const api =  require('../../utils/api');

Page({
  data: {
    couponInfo: {},
    accountBalance: 0,
    showStoreModal: false,
    usageRange: null
  },

  onLoad: function(options) {
    // 获取团购券ID
    const id = options.id;
    
    // 获取团购券信息
    this.getCouponInfo(id);
    
    // 获取账户余额
    this.getAccountBalance();
  },
  
  // 获取团购券信息
  getCouponInfo: function(id) {
    wx.showLoading({
      title: '加载中...',
    });
    
    if (!id) {
      wx.showToast({
        title: '团购券ID不存在',
        icon: 'none'
      });
      return;
    }
    
    api.groupBuy.getDetail(id)
      .then(res => {
        if (res && res.success && res.data) {
          this.setData({
            couponInfo: res.data
          });
          
          // 获取团购券使用范围
          this.getUsageRange(id);
        } else {
          wx.showToast({
            title: '获取团购券详情失败',
            icon: 'none'
          });
          // 使用模拟数据
          this.useDefaultCouponInfo(id);
        }
      })
      .catch(err => {
        console.error('获取团购券详情失败:', err);
        wx.showToast({
          title: '获取团购券详情失败',
          icon: 'none'
        });
        // 使用模拟数据
        this.useDefaultCouponInfo(id);
      })
      .finally(() => {
        wx.hideLoading();
      });
  },
  
  // 获取团购券使用范围
  getUsageRange: function(id) {
    api.groupBuy.getUsageRange(id)
      .then(res => {
        if (res && res.success && res.data) {
          this.setData({
            usageRange: res.data
          });
        } else {
          console.error('获取团购券使用范围失败:', res);
        }
      })
      .catch(err => {
        console.error('获取团购券使用范围失败:', err);
      });
  },
  
  // 使用默认数据（当API失败时）
  useDefaultCouponInfo: function(id) {
    // 这里使用模拟数据
    const groupBuyList = [
      { id: 1, name: '台球新人体验一小时', originalPrice: 25, price: 15.8, validDays: 30, duration: '1小时', timeRange: '周一、二、三、四、五、六、日，00:00~23:59可用1小时', storeRange: '【长沙-郡原生活广场店】台球4,台球3,台球2,台球1', supportBalance: false },
      { id: 2, name: '工作日5小时', originalPrice: 88, price: 79.8, validDays: 30, duration: '5小时', timeRange: '周一至周五，00:00~23:59可用5小时', storeRange: '【长沙-郡原生活广场店】台球4,台球3,台球2,台球1', supportBalance: false },
      { id: 3, name: '通普场6小时', originalPrice: 88, price: 78, validDays: 30, duration: '6小时', timeRange: '周一至周日，00:00~23:59可用6小时', storeRange: '【长沙-郡原生活广场店】台球4,台球3,台球2,台球1', supportBalance: false },
      { id: 4, name: '通普场8小时', originalPrice: 109, price: 88, validDays: 30, duration: '8小时', timeRange: '周一至周日，00:00~23:59可用8小时', storeRange: '【长沙-郡原生活广场店】台球4,台球3,台球2,台球1', supportBalance: false }
    ];
    
    // 查找对应ID的团购券
    const couponInfo = groupBuyList.find(item => item.id == id) || groupBuyList[0];
    
    this.setData({
      couponInfo: couponInfo
    });
  },
  
  // 获取账户余额
  getAccountBalance: function() {
    api.user.getAccountInfo()
      .then(res => {
        if (res && res.success && res.data) {
          this.setData({
            accountBalance: res.data.balance || 0
          });
        } else {
          // 使用默认值
          this.setData({
            accountBalance: 0
          });
        }
      })
      .catch(err => {
        console.error('获取账户信息失败:', err);
        // 使用默认值
        this.setData({
          accountBalance: 0
        });
      });
  },
  
  // 返回上一页
  onTapBack: function() {
    wx.navigateBack();
  },
  
  // 切换可用门店模态框显示状态
  toggleStoreModal: function() {
    this.setData({
      showStoreModal: !this.data.showStoreModal
    });
  },
  
  // 支付操作
  onPay: function() {
    const that = this;
    wx.showModal({
      title: '确认支付',
      content: `确认支付¥${this.data.couponInfo.price/100}购买${this.data.couponInfo.name}？`,
      success (res) {
        if (res.confirm) {
          // 调用购买API
          wx.showLoading({
            title: '支付中',
          });
          
          api.groupBuy.buy({
            activity_id: that.data.couponInfo.id,
            quantity: 1 // 默认购买1份
          })
          .then(res => {
            if (res && res.success && res.data) {
              const payParams = res.data.pay_params;
              
              // 调用微信支付
              wx.requestPayment({
                timeStamp: payParams.time_stamp,
                nonceStr: payParams.nonce_str,
                package: payParams.package,
                signType: payParams.sign_type,
                paySign: payParams.pay_sign,
                success: function (payRes) {
                  // 支付成功
                  wx.hideLoading();
                  wx.showToast({
                    title: '支付成功',
                    icon: 'success',
                    duration: 2000,
                    success: function() {
                      // 支付成功后返回上一页
                      setTimeout(function() {
                        wx.navigateBack();
                      }, 2000);
                    }
                  });
                },
                fail: function (err) {
                  console.error('支付失败:', err);
                  wx.hideLoading();
                  wx.showToast({
                    title: '支付已取消',
                    icon: 'none'
                  });
                }
              });
            } else {
              wx.hideLoading();
              wx.showToast({
                title: res.message || '创建订单失败',
                icon: 'none'
              });
            }
          })
          .catch(err => {
            console.error('创建订单失败:', err);
            wx.hideLoading();
            wx.showToast({
              title: '创建订单失败',
              icon: 'none'
            });
          });
        }
      }
    });
  }
});